Подпрограммы для работы с динамическими массивами

function ArrEqual<T>(a, b: array of T): boolean;
        Возвращает, совпадают ли массивы
function Copy(a: array of T): array of T;
        Создаёт копию динамического массива
function High(a: array of T): integer;
        Возвращает верхнюю границу динамического массива
function Length(a: array of T): integer;
        Возвращает длину динамического массива
function Length(a: array of T; dim: integer): integer;
        Возвращает длину динамического массива по размерности dim
function Low(a: array of T): integer;
        Возвращает 0
function MatrEqual<T>(a, b: array [,] of T): boolean;
        Сравнивает матрицы на равенство
function NextPermutation(a: array of integer): boolean;
        Возвращает следующую перестановку в массиве
procedure Reverse<T>(a: array of T);
        Изменяет порядок элементов в динамическом массиве на противоположный
procedure Reverse<T>(a: array of T; index, count: integer);
        Изменяет порядок элементов на противоположный в диапазоне динамического массива длины count, начиная с индекса index
procedure Reverse<T>(a: List<T>);
        Изменяет порядок элементов в списке на противоположный
procedure Reverse<T>(a: List<T>; index, count: integer);
        Изменяет порядок элементов на противоположный в диапазоне списка длины count, начиная с индекса index
procedure Reverse(var s: string);
        Изменяет порядок символов в строке на противоположный
procedure Reverse(var s: string; index, count: integer);
        Изменяет порядок символов в части строки длины count на противоположный, начиная с индекса index
procedure SetLength(var a: array of T; n: integer);
        Устанавливает длину одномерного динамического массива. Старое содержимое сохраняется
procedure SetLength(var a: array [,...,] of T; n1,n2,...: integer);
        Устанавливает размеры n-мерного динамического массива. Старое содержимое сохраняется
procedure Shuffle<T>(a: array of T);
        Перемешивает динамический массив случайным образом
procedure Shuffle<T>(l: List<T>);
        Перемешивает список случайным образом
procedure Sort<T>(a: array of T);
        Сортирует динамический массив по возрастанию
procedure Sort<T>(a: array of T; cmp: (T,T)->integer);
        Сортирует динамический массив по критерию сортировки, задаваемому функцией сравнения cmp
procedure Sort<T>(a: array of T; less: (T,T)->boolean);
        Сортирует динамический массив по критерию сортировки, задаваемому функцией сравнения less
procedure Sort<T>(l: List<T>);
        Сортирует список по возрастанию
procedure Sort<T>(l: List<T>; cmp: (T,T)->integer);
        Сортирует список по критерию сортировки, задаваемому функцией сравнения cmp
procedure Sort<T>(l: List<T>; less: (T,T)->boolean);
        Сортирует список по критерию сортировки, задаваемому функцией сравнения less
procedure SortDescending<T>(a: array of T);
        Сортирует динамический массив по убыванию
procedure SortDescending<T>(l: List<T>);
        Сортирует список по убыванию